Computerized data models that can predict future data and/or explain past data are helpful in solving real-world problems. These models are especially useful for large and complex data that are difficult for humans to effectively understand. One data modeling technique is probabilistic modeling. Probabilistic modeling provides mathematically rigorous methods for handling uncertainty when modeling a problem domain. Probabilistic modeling has an extremely wide range of applications, including medical diagnoses, bioinformatics, computer vision, signal processing, control systems, cognitive science, and financial modeling.
One probabilistic data modeling technique is Bayesian networks (BN), also known as belief networks, Bayesian belief networks, probabilistic networks, or directed graphical models. A BN consists of nodes connected by directed edges. Each node represents a particular random variable having some number of states. Each edge is directed from a parent node to a child node and represents the causal influence of the parent node on the child node. Each node in a BN has a conditional probability distribution (CPD) associated with it that describes the causal influences of its parents. Bayesian networks are generally used to compute the probabilities that certain events will occur, possibly given the fact that certain other events have already occurred.
Current inference engines that are used to compute probabilities in BNs may have an inherent overhead, because they are written as generic algorithms in high-level programming languages. Further, current inference engines used to compute probabilities in BNs is that they are written by hand by computer programmers in a specific programming language. To use the inference engine in a different programming language, the inference engine may either have to be re-written in the other language or some sort of inter-language communication protocol may have to be used. It may be time-consuming and error-prone to rewrite a complex algorithm such as a BN inference engine in a different programming language. Inter-language communication protocols may have their own overhead and may often be difficult to use effectively. In some cases, an inter-language communication protocol may not even exist for certain programming languages.
A method and system for computing probabilities in BNs without incurring the overhead described above, and without being restricted to a specific programming language, are highly desirable.